package com.fruit.app.common.page.Paginator;


public interface Paginator {

	/** 每页默认的项数(10)。 */
	public static final int DEFAULT_ITEMS_PER_PAGE = 20;
	/** 滑动窗口默认的大小(7)。 */
	public static final int DEFAULT_SLIDER_SIZE = 7;
	/** 表示项数未知(<code>Integer.MAX_VALUE</code>)。 */
	public static final int UNKNOWN_ITEMS = Integer.MAX_VALUE;

	/**
	 * 取得总页数。
	 *
	 * @return 总页数
	 */
	public abstract int getPages();

	/**
	 * 取得当前页。
	 *
	 * @return 当前页
	 */
	public abstract int getPage();

	/**
	 * 取得总项数。
	 *
	 * @return 总项数
	 */
	public abstract int getItems();

	/**
	 * 取得首页页码。
	 *
	 * @return 首页页码
	 */
	public abstract int getFirstPage();

	/**
	 * 取得末页页码。
	 *
	 * @return 末页页码
	 */
	public abstract int getLastPage();

	/**
	 * 取得前一页页码。
	 *
	 * @return 前一页页码
	 */
	public abstract int getPreviousPage();

	/**
	 * 取得后一页页码。
	 *
	 * @return 后一页页码
	 */
	public abstract int getNextPage();

	/**
	 * @return the startRow
	 */
	public abstract int getStartRow();

	/**
	 * @return the endRow
	 */
	public abstract int getEndRow();

	/**
	 * 用于mysql分页
	 * 
	 * @return the start
	 */
	public abstract int getStart();

    /**
     * 取得每页项数。
     *
     * @return 每页项数
     */
	public abstract  int getItemsPerPage();
	
    /**
     * 设置并取得总项数。如果指定的总项数小于0，则被看作0。自动调整当前页，确保当前页值在正确的范围内。
     *
     * @param items 总项数
     *
     * @return 设置以后的总项数
     */
    public abstract int setItems(int items);
    
    /**
     * 设置并取得当前页。实际的当前页值被确保在正确的范围内。
     *
     * @param page 当前页
     *
     * @return 设置后的当前页
     */
    public int setPage(int page);
    
	public void setAction(String action);

	public String getAction();
    
    
}